<template>
   <div>
       <h1>当前求和为:{{sum}}</h1>
       <h3>当前求和放大10倍为：{{bigSum}}</h3>
       <h3>我在{{school}},学习{{subject}}</h3>
       <select v-model.number="n">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
       </select>
       <button @click="increment">+</button>
       <button @click="derement">-</button>
       <button @click="incrementOdd">当前求和为奇数在加</button>
       <button @click="incrementWait">等一等在加</button>
   </div>
</template>

<script>
//引入mapState映射状态工具 优化代码
import {mapState,mapGetters} from 'vuex'

    export default {
       name:'Count',
       data(){
            return{
                n:1, //用户选择的数值
                
            }
        },
        methods:{
            increment(){
                this.$store.commit('JIA',this.n)
            },
            derement(){
                this.$store.commit('JIAN',this.n)
            },
            incrementOdd(){
                // if(this.$store.state.sum%2){
                //      this.$store.dispatch('jia',this.n)
                // }
                this.$store.dispatch('jiaOdd',this.n)
            },
            incrementWait(){
                // setTimeout(()=>{
                //     this.$store.dispatch('jia',this.n)
                // },500)
                this.$store.dispatch('jiaWait',this.n)
            }
        },
        computed:{
            //靠程序员自己亲自写的计算属性
            // sum(){
            //     return this.$store.state.sum
            // },
            // school(){
            //     return this.$store.state.school
            // },
            // subject(){
            //     return this.$store.state.subject
            // },


            //借助mapState生成计算属性，从state中读取数据。（对象写法） {计算属性的函数名:'state中的数据名'}
            // ...mapState({sum:'sum',school:'school',subject:'subject'}),
            //借助mapState生成计算属性，从state中读取数据。（数组写法）['sum']一个值代表了计算函数名和state数据名
            ...mapState(['sum','school','subject']),
            //同理还有个mapGetter生成计算属性，从getters中读取数据。 (对象写法)
            //...mapGetters({bigSum:'bigSum'}),
           //同理还有个mapGetter生成计算属性，从getters中读取数据。 (数组写法)
            ...mapGetters(['bigSum']),
            // bigSum(){
            //     return this.$store.getters.bigSum
            // }
            
            

            
        }
    }
</script>
<style scoped>
  button{
      margin-left: 5px;
  }
</style>
